﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EntitiesLayer
{
   public abstract class CuerpoCeleste : IEntity
    {
        private int id;
        public int Id {
            get { return id; }
            set { id = value; }
        }
        private string nombre;
        public string Nombre {
            set { nombre = value; }
            get { return nombre; }
        }

        private decimal masa;
        public decimal Masa {
            set { masa = value; }
            get { return masa; }
        }
        private decimal temperaturaMedia;
        public decimal TemperaturaMedia{
            get { return temperaturaMedia; }
            set { temperaturaMedia = value; }
        }
        private TimeSpan duracion;
        public TimeSpan Duracion {
            set { duracion = value; }
            get { return duracion; }
        }

        private Lazy<IList<Mission>> listaMissiones;
        public IList<Mission> ListaMissiones {
            get { return listaMissiones!=null?listaMissiones.Value:null; }
        }


        public CuerpoCeleste(string nombre, decimal masa, decimal temperaturaMedia, TimeSpan duracion, Lazy<IList<Mission>> listaMissiones = null, int id=0)
        {
            this.listaMissiones = listaMissiones;
            Id = id;
            Nombre = nombre;
            Masa = masa;
            TemperaturaMedia = temperaturaMedia;
            Duracion = duracion;
        }


        public override string ToString()
        {
            return "Id: "+Id.ToString()
            +"\nNombre: "+Nombre.ToString()
            +"\nMasa: "+Masa.ToString()
            +"Temperatura: "+ TemperaturaMedia.ToString()
            +"Duraccion: "+Duracion.ToString();
        }
    }

}
